package com.foreknow.service;

import com.foreknow.entity.Department;
import com.foreknow.entity.Rule;
import com.foreknow.entity.Scheduling;
import com.foreknow.entity.User;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public interface SchedulingService {
    /**
     * 查询所有数据
     *
     * @return
     */
    public List<Scheduling> All(String query);

    /**
     * 根据日期查询值班员工
     *
     * @param startTime
     * @param endTime
     * @return
     */
    List<Scheduling> getSomeByDate(String startTime, String endTime);

    List<User> getUser(String dept, String level);

    /**
     * 查询所有科室
     *
     * @return
     */
    List<Department> getAllDepart();

    /**
     * 根据id查询用户id
     *
     * @param name
     * @return
     */
    User getUserIdByName(String name);

    /**
     * 添加规则
     *
     * @param rule
     * @return
     */
    int addRule(Rule rule);

    /**
     * 添加生成的值班日期
     *
     * @param list
     * @return
     */
    int addscheduling(List<Scheduling> list);

    /**
     * 将Object转换成List集合
     *
     * @param obj
     * @param clazz
     * @return
     */
    public List<User> castList(Object obj, Class<User> clazz);

    /**
     * 日期增加一天
     *
     * @param c
     * @return
     */
    public long get_D_Plaus_1(Calendar c);

    /**
     * 获取两个日期之间的所有日期(包含开始时间和结束时间)
     *
     * @param startTime
     * @param endTime
     * @return
     * @throws ParseException
     */
    public List<String> getTimesBetweenDates(String startTime, String endTime) throws ParseException;

    /**
     * 根据UserId与Week查找RuleId
     *
     * @param week
     * @param id
     * @return
     */
    int getRuleId(String week, Integer id);

}